package org.canto.poss.instr.common.pojo.dao;

import java.util.List;

/**
 * 通用Dao
 *
 * @param * <D> Doa层向上传输的查询结果对象
 *          <Q> Doa层接收的查询条件数据对象
 *          <E> Dao层接收的插入或修改的数据对象
 */
public interface BaseDao {


    /**
     * 根据id查询
     *
     * @param query
     * @return
     */
    <D, Q> D get(Q query);

    /**
     * 通用查询列表数据方法
     *
     * @param query
     * @return
     */
    <D, Q> List<D> findList(Q query);

    /**
     * 通用新增数据方法
     *
     * @param entity
     * @return
     */
    <E> long insert(E entity);

    /**
     * 通用修改方法
     *
     * @param entity
     * @return
     */
    <E> long update(E entity);

    /**
     * 逻辑删除
     *
     * @param entity
     * @return
     */
    <E> long delete(E entity);

}
